a2acee8949174ffced5b56e232ddbc6d7cb522f4,findbugs/src/java/edu/umd/cs/findbugs/detect/SwitchFallthrough.java,SwitchFallthrough,sawOpcode,#number#,60

Before Change


			inSwitch = false;
		if (inSwitch) {
			if (getPC() == switchPC + switchOffsets[nextIndex]
			        && switchOffsets[nextIndex] != getDefaultSwitchOffset()
			) {
				if (nextIndex > 0 && reachable) {
					int endOfPreviousCase = lineNumbers.getSourceLine(getPC() - 1);
					int startOfNextCase = lineNumbers.getSourceLine(getPC());
					int previousLabel = switchLabels[nextIndex - 1];
					int nextLabel = switchLabels[nextIndex];
					if (!(previousLabel == 10 && nextLabel == 13)
					        && !(previousLabel == 13 && nextLabel == 10)
					        && startOfNextCase - endOfPreviousCase <= 2) {
						System.out.println("Reached the switch for " + switchLabels[nextIndex]
						        + " at line number " + startOfNextCase
						        + " in " + getFullyQualifiedMethodName());
					}
					/*
					System.out.println("switchPC: " + switchPC);
					System.out.println("nextIndex: " + nextIndex);
					System.out.println("switchOffset[nextIndex]: " + switchOffsets[nextIndex]);
					for(int i = 0; i < switchOffsets.length; i++)
						System.out.println("	" + switchLabels[i] + "	" +
							(switchPC + switchOffsets[i]));
					*/
				}
				do {
					nextIndex++;
					if (nextIndex >= switchOffsets.length) {
						inSwitch = false;
						break;
					}
				} while (getPC() == switchPC + switchOffsets[nextIndex]);
			}
		}

After Change


						if ((lastSeen != GOTO) && (lastSeen != GOTO_W)) {
							bugReporter.reportBug(new BugInstance("SF_SWITCH_FALLTHROUGH", NORMAL_PRIORITY)
			        			.addClassAndMethod(this)
			        			.addSourceLineRange(this, lastPC, getPC()));
			        	}

/*	Not sure why this is here, isn't lack of goto enough?